Systems and methods for message personalization

ABSTRACT

Systems and methods for building personalized messages to one or more recipients. In one aspect, one or more personalized messages are created from one or more templates and one or more token lists. The templates include global tokens and local tokens. The token lists contain fields in the templates and corresponding token values. For each respective target recipient, a personalized message is generated by identifying and storing global tokens and corresponding global token values in a global cache, and identifying and storing local tokens and corresponding local token values in a local cache. The personalized messages are then created using the templates and substituting tokens with token values stored in the global and local cache. The personalized messages are then distributed to the corresponding target recipients.

1. FIELD OF THE INVENTION

Systems and methods for efficient message personalization are provided.More particularly, computer systems and methods for efficient processingand sending of personalized interactive digital messages are provided.

2. BACKGROUND OF THE INVENTION

Electronic mail (e-mail) is an essential network service. Most e-mailsystems that send mail over the Internet use simple mail transferprotocol (SMTP) to send messages from one server to another. Themessages can then be retrieved with an e-mail client using services suchas post office protocol (POP) or Internet message access protocol(IMAP). Other protocols for sending e-mail include POP3, X.400International Telecommunication Union standard (X.400), and the Novellmessage handling service (MHS), and extended simple mail transferprotocol (ESMTP). Specifically, X.400 defines a transfer protocol forsending electronic mail between mail servers and is used in Europe as analternative to SMTP. MHS, which was developed by Novell, is used forelectronic mail on Netware networks.

SMTP transports electronic mail among different hosts within thetransmission control protocol/Internet protocol (TCP/IP) suite. UnderSMTP, a client SMTP process opens a TCP connection to a server SMTPprocess on a remote host and attempts to send mail across theconnection. The server SMTP listens for a TCP connection on a specificport (25), and the client SMTP process initiates a connection on thatport. When the TCP connection is successful, the two processes execute asimple request-response dialogue, defined by the SMTP protocol (see RFC821 STD 10, Simple mail transfer protocol, August 1982, for details), inwhich the client process transmits the mail addresses of the originatorand the recipient(s) for a message. When the server process acceptsthese mail addresses, the client process transmits the e-mail instantmessage. The e-mail message contains a message header and message text(“body”) formatted in accordance with RFC 822 (RFC822 STD 11, Standardfor the format of ARPA—Internet Text Messages, August 1982). Mail thatarrives via SMTP is forwarded to a remote server or it is delivered tomailboxes on the local server. On UNIX-based systems, Sendmail is themost widely used SMTP server for e-mail. Sendmail includes a POP3 serverand also comes in a version for Windows NT. Microsoft Outlook is themost popular mail-agent program on Window-based systems.

The SMTP model (RFC 821) supports both end-to-end (no intermediatemessage transfer agents “MTAs”) and store-and-forward mail deliverymethods. The end-to-end method is used between organizations, and thestore-and-forward method is chosen for operating within organizationsthat have TCP/IP and SMTP-based networks. A SMTP client will contact thedestination host's SMTP server directly to deliver the mail. It willkeep the mail item from being transmitted until it has been successfullycopied to the recipient's SMTP. This is different from thestore-and-forward principle that is common in many other electronicmailing systems, where the mail item may pass through a number ofintermediate hosts in the same network on its way to the destination andwhere successful transmission from the sender only indicates that themail item has reached the first intermediate hop. The RFC 821 standarddefines a client-server protocol. The client SMTP is the one whichinitiates the session (that is, the sending SMTP) and the server is theone that responds (the receiving SMTP) to the session request. Becausethe client SMTP frequently acts as a server for a user-mailing program,however, it is often simpler to refer to the client as the sender-SMTPand to the server as the receiver-SMTP. An SMTP-based process cantransfer electronic mail to another process on the same network or toanother network via a relay or gateway process accessible to bothnetworks. An e-mail message may pass through a number of intermediaterelay or gateway hosts on its path from a sender to a recipient.

A simple model of the components of the SMTP system is shown in FIG. 1.Users deal with a user agent (UA). Popular user agents for UNIX includeBerkeley Mail, Elm, MH, Pine, and Mutt. The user agents for Windowsinclude Microsoft Outlook/Outlook Express and Netscape/MozillaCommunicator. The exchange of e-mail using TCP is performed by an MTA.The most common MTA for UNIX systems is Sendmail, and a conventional MTAfor Windows is Microsoft Exchange 2000/2003. Users normally do not dealwith the MTA. It is the responsibility of the system administrator toset up the local MTA. Users often have a choice, however, for their useragent. The local MTA maintains a mail queue so that it can schedulerepeat delivery attempts in case a remote server is unable. Also thelocal MTA delivers mail to mailboxes, and the information can bedownloaded by the UA (see FIG. 1). The RFC 821 standard specifies theSMTP protocol, which is a mechanism of communication between two MTAsacross a single TCP connection. The RFC 822 standard specifies theformat of the electronic mail message that is transmitted using the SMTPprotocol (RFC 821) between the two MTAs. As a result of a user mailrequest, the sender-SMTP establishes a two-way connection with areceiver-SMTP. The receiver-SMTP can be either the ultimate destinationor an intermediate one (known as a mail gateway). The sender-SMTP willgenerate commands, which are replied to by the receiver-SMTP (see FIG.1).

Both the SMTP client and server have two basic components: UA and localMTA. There are few cases of sending electronic-mail messages acrossnetworks. In the first case of communication between the sender and thereceiver across the network (see FIG. 1), the sender's UA prepares themessage, creates the envelope, and puts message in the envelope. The MTAtransfers the mail across the network to the TCP-port 25 of thereceiver's MTA. In the second case of communication between the sendinghost (client) and the receiving host (server), relaying could beinvolved (see FIG. 2). In addition to one MTA at the sender site and oneat the receiving site, other MTAs, acting as client or server, can relaythe electronic mail across the network. This third scenario ofcommunication between the sender and the receiver can be accomplishedthrough the use of an e-mail gateway, which is a relay MTA that canreceive electronic mail prepared by a protocol other than SMTP andtransform it to the SMTP format before sending it. The e-mail gatewaycan also receive electronic mail in the SMTP format, change it toanother format, and then send it to the MTA of the client that does notuse the TCP/IP protocol suite. In various implementations, there is thecapability to exchange mail between the TCP/IP SMTP mailing system andthe locally used mailing systems. These applications are called mailgateways or mail bridges. Sending mail through a mail gateway may alterthe end-to-end delivery specification, because SMTP will only guaranteedelivery to the mail-gateway host, not to the real destination host,which is located beyond the TCP/IP network. When a mail gateway is used,the SMTP end-to-end transmission is host-to-gateway, gateway-to-host orgateway-to-gateway; the behavior beyond the gateway is not defined bySMTP.

E-mail across SMTP, or the other protocols referenced above, is usedextensively today to communicate relevant personalized information. Forexample, a company needs to frequently communicate to each of itsnumerous consumers with relevant personalized e-mail. In such asituation, companies often maintain information specific to each of itscustomers or clients in a data repository, such as customer databases,data files, customer relationship management (CRM) systems, and thelike. One approach for communicating with all of these customers is tosend personalized individual, batch, or bulk e-mail through an e-maildistributor or high-throughput mail transfer agent (MTA) system.

A mail transfer agent or MTA (also called a mail server, or a mailexchange server in the context of the Domain Name System) is a computerprogram or software agent that transfers electronic mail messages fromone computer to another. Webster's New World Computer Dictionary, tenthedition, Wiley Publishing Inc., Indianapolis, Ind., defines an MTA as ane-mail program that sends e-mail messages to another message transferagent. An MTA can handle large amounts of mail, can interact withdatabases in many formats, and has extensive knowledge of the many SMTPvariants in use. Examples of high-throughput MTA systems are disclosedin U.S. patent application Ser. No. 10/857,601, entitled “Email DeliverySystem Using Metadata,” filed May 27, 2004 as well as U.S. patentapplication Ser. No. 10/777,336, entitled “Email Using Queues inNon-persistent memory,” filed Feb. 11, 2004, each of which is herebyincorporated by reference in its entirety. One example of an MTA systemis the StrongMail MTA (Redwood Shores, Calif.). Conventional MTAprograms include, but are not limited to, sendmail, qmail, Exim, andPostfix.

High-throughput MTA systems such as those described above are morepowerful than conventional MTA programs. Both high-throughput andconventional MTA products can send out messages to a plurality ofrecipients. However, while functional, existing MTA systems areunsatisfactory. To illustrate why, consider the case in which company Awishes to communicate with existing or past customers. The companymaintains a record of each of these customers in a company database.Such records may contain personalized information about each of thecustomers. Company A wishes to use this information in order tocustomize each of the e-mails. To accomplish this, a method foraccessing the customer information in the database needs to be arranged.Separately, the design of the e-mail that will be sent to each customerin the distribution list needs to be created. Therefore, at a minimum,what is needed is coordination between an information technology (IT)specialist and a business development professional in order to configuredata from one or more sources to create messages to be delivered usingthe MTA distribution.

An IT specialist is consulted in order to provide a secure method forquerying the database containing customer information. For instance, theIT specialist might set up an account with limited database privilegesas well as construct scripts with customized database queries in orderto obtain the information for each customer. At a minimum, suchinformation will include an e-mail address for each customer. In morepowerful examples, the names of the customers are identified, as well asother information such as the types of products the customer has boughtin the past, geographic information, information about the customerpayment history, how often the customer buys products, how much productthe customer buys, and so forth. Thus, it is clear that an IT specialistis needed in conventional MTA based distribution efforts each time abusiness development professional designs a new e-mail for distributionusing an MTA. The role of the business development professional is tooptimize the persuasiveness and effectiveness of the customized MTAdistribution. The work of the business development professional involveschoosing fonts, color schemes and art that will be used in thecustomized e-mail sent to a plurality of recipients. The work of thebusiness development professional further involves making decisionsabout which customers will receive a customized e-mail. The businessdevelopment professional can, for example, select customers as afunction of geographic region, amount of product bought from the companyduring a predetermined time period, etc. Thus, close coordinationbetween the business development professional and the IT specialist isneeded for each business development project that involves thedistribution of customized electronic messages using an MTA.

The business development example provided above is just one example ofthe many applications that can be implemented using e-mail. Otherapplications include providing secure custom statements (e.g., bankingstatements), person-to-person customized e-mail, traceable e-mails,e-mails from customer service to existing customers, e-mails from anemployer to an employee, etc. However, conventional user agents do notprovide satisfactory methods for supporting such features. As theexample above shows, complex steps are necessary in order to supportsuch applications. Accordingly, given the above background, what areneeded in the art are improved systems and methods for generating andsending personalized e-mail messages for distribution.

Discussion or citation of a reference herein will not be construed as anadmission that such reference is prior art to the present disclosure.

3. SUMMARY OF THE INVENTION

The present disclosure addresses many of the shortcomings and drawbacksfound in the prior art. In the present disclosure, systems and methodsare provided for building personalized messages to one or morerecipients. In one aspect, one or more personalized messages are createdfrom a mailing comprising one or more templates and one or more tokenlists. The templates include global tokens and local tokens. The tokenlists contain the tokens in the templates and corresponding tokenvalues. For each respective target recipient, a personalized message isgenerated by identifying and storing global tokens and correspondingglobal token values in a global cache, and identifying and storing localtokens and corresponding local token values in a local cache. Thepersonalized messages are then created using the templates andsubstituting tokens with token values stored in the global and localcache. The personalized messages are then distributed to thecorresponding target recipients.

In one aspect of the present disclosure, a computing device is providedfor building a plurality of personalized messages from a mailing withouthuman intervention. The mailing uses one or more templates and one ormore token lists. Each template comprises a set of global tokens, andeach template comprises a set of local tokens. The computing devicecomprises a processor and a memory. The memory stores a global cache anda local cache and, for each respective target recipient in a pluralityof target recipients, the memory comprises instructions for execution bya processor. The instructions include:

(a) identifying, in a template designated for the respective targetrecipient in the one or more templates, one or more global tokens notfound in the global cache; (b) obtaining, for each global token in theone or more global tokens identified in (a), a corresponding globaltoken value from the one or more token lists, each token list in the oneor more token lists including one or more global tokens in the pluralityof global tokens and corresponding global token values; (c) storing inthe global cache, the one or more global tokens identified in (a) andtheir corresponding global token values obtained in (b); (d) storing inthe local cache one or more local tokens in the template designated forthe respective target recipient and corresponding local token valueswhen the one or more local tokens are not present in the local cache;and (e) building a personalized message from the template designated forthe respective target recipient by substituting global tokens in thetemplate designated for the respective recipient with global tokenvalues stored in the global cache and substituting local tokens in thetemplate designated for the respective recipient with local token valuesassociated with the respective target recipient that are stored in thelocal cache, thereby building the plurality of personalized messages,wherein each personalized message in the plurality of personalizedmessages corresponds to a target recipient in a plurality of targetrecipients.

Yet in another aspect of the present disclosure, a computer system isdisclosed for building a plurality of personalized messages from amailing without human intervention. The mailing uses one or moretemplates and one or more token lists. Each template in the one or moretemplates comprises a set of global tokens, and each template in the oneor more templates comprises a set of local tokens. The computer systemcomprises one or more processors and one or more memory, wherein, theone or more memory storing a global cache and a local cache, wherein,for each respective target recipient in the plurality of targetrecipients, the one or more memory comprise instructions, executable bythe one or more processors, for: (a) identifying, in a templatedesignated for the respective target recipient, one or more globaltokens not found in the global cache; (b) obtaining, for each globaltoken in the one or more global tokens identified in (a), acorresponding global token value from the one or more token lists, eachtoken list in the one or more token lists including one or more globaltokens in the plurality of global tokens and corresponding global tokenvalues; (c) storing in the global cache, the one or more global tokensidentified in (a) and their corresponding global token values obtainedin (b); (d) storing in the local cache one or more local tokens in theone or more templates and corresponding local token values when the oneor more local tokens are not present in the local cache; and (e)building a personalized message from the template designated for therespective target recipient by substituting global tokens in thetemplate designated for the respective target recipient with globaltoken values stored in the global cache and substituting local tokens inthe template designated for the respective target recipient with localtoken values associated with the respective target recipient that arestored in the local cache, thereby building the plurality ofpersonalized messages, wherein each personalized message in theplurality of personalized messages corresponds to a target recipient inthe plurality of target recipients.

Yet in another aspect of the present disclosure, a non-transitorycomputer readable medium comprising instructions to perform a method forbuilding a plurality of personalized messages from a mailing withouthuman intervention is disclosed. The mailing uses one or more templatesand one or more token lists, wherein each template in the one or moretemplates comprises a subset of global tokens in a plurality of globaltokens, and each template in the one or more templates comprises asubset of local tokens in a plurality of local tokens. The method isperformed by one more processors and one or more memory, the one or morememory storing a global cache and a local cache wherein, for eachrespective target recipient in the plurality of target recipients, themethod comprises:

(a) identifying, in a template designated for the respective targetrecipient in the one or more templates, one or more global tokens notfound in a global cache; (b) obtaining, for each global token in the oneor more global tokens identified in (a), a corresponding global tokenvalue from the one or more token lists, each token list in the one ormore token lists including one or more global tokens in the plurality ofglobal tokens and corresponding global token values; (c) storing in theglobal cache, the one or more global tokens identified in (a) and theircorresponding global token values obtained in (b); (d) storing in thelocal cache one or more local tokens in the template designated for thetarget recipient and corresponding local token values when the one ormore local tokens are not present in the local cache; and (e) building apersonalized message from the one or more templates for the respectivetarget recipient by substituting global tokens in the templatedesignated for the target recipient with global token values stored inthe global cache and substituting local tokens in the templatedesignated for the target recipient with local token values associatedwith the respective target recipient that are stored in the local cache,thereby building the plurality of personalized messages, wherein eachpersonalized message in the plurality of personalized messagescorresponds to a target recipient in the plurality of target recipients.

In some embodiments, the present disclosure comprises flushing the localcache after building a first personalized message in a plurality ofpersonalized messages and before building a second personalized messagein the plurality of personalized messages. In some embodiments, themethod occurs during load time. In some embodiments, the method furthercomprises sending each respective personalized message in a plurality ofpersonalized messages to a corresponding target recipient. In someembodiments, the steps of the method are performed on a server. In someembodiments, the local token values stored in local cache are retrievedfrom a data repository of target recipient records and information. Insome embodiments, the local token values stored in local cache areretrieved from a local token list received from a client computer. Insome embodiments, the one or more templates are received from a clientcomputer. In some embodiments, the one or more token lists in arereceived from a client computer. In some embodiments, global tokenvalues or local token values are themselves tokens or subtokens. In someembodiments, the personalized messages can be e-mail, SMS, FAX, IM,social network posts, voice, or any other digital communication process.

4. BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is the basic simple mail transfer protocol (SMTP) model inaccordance with the prior art.

FIG. 2 is the simple mail transfer protocol (SMTP) model with relay mailtransfer agents in accordance with the prior art.

FIG. 3 is a schematic diagram of a client computer system for sendingtemplate messages and lists for a mailing in accordance with anembodiment of the present disclosure.

FIG. 4 is a schematic diagram of a system according to the presentdisclosure for generating personalized messages for a mailing.

FIG. 5 is a flowchart depicting a method of creating and sendingpersonalized messages to one or more intended recipients using templatesand token lists in accordance with an embodiment of the presentdisclosure.

Like reference numerals refer to corresponding parts throughout theseveral views of the drawings.

5. DETAILED DESCRIPTION

The present disclosure encompasses systems and methods for efficientmessage personalization for mailings. In a mailing, a client sends a setof template messages (templates), along with a set of token lists, to aprocessing module. The processing module then generates a customized orpersonalized message using data from a data repository or any other datasource. The personalization process is optimized using a global cacheand a local cache to store token definitions and values. Once thepersonalized message is generated, the personalized message is sent tocorresponding target recipients using a standard email protocol. For ageneral reference regarding e-mail protocols, see Hughes, 1998, InternetE-mail: Protocols, Standards, and Implementation, Artech HousePublishers, which is hereby incorporated herein by reference in itsentirety.

FIG. 3 details an exemplary system that supports the functionalitydescribed above. The system is preferably a computer system 10 having:

-   -   a central processing unit 22;    -   a main non-volatile storage unit 14, for example, a hard disk        drive, for storing software and data, the storage unit 14        controlled by controller 12;    -   a system memory 36, preferably high speed random-access memory        (RAM), for storing system control programs, data, and        application programs, comprising programs and data loaded from        non-volatile storage unit 14; system memory 36 may also include        read-only memory (ROM);    -   a user interface 32, comprising one or more input devices (e.g.,        keyboard 28) and a display 26 or other output device;    -   a network interface card 20 or other communication circuitry for        connecting to any wired or wireless communication network 34        (e.g., the Internet or any other wide area network);    -   an internal bus 30 for interconnecting the aforementioned        elements of the system; and    -   a power source 24 to power the aforementioned elements.

Operation of computer 10 is controlled primarily by operating system 40,which is executed by central processing unit 22. Operating system 40 canbe stored in system memory 36. In addition to operating system 40, in atypical implementation, system memory 36 can include one or more of thefollowing:

-   -   file system 42 for controlling access to the various files and        data structures used by the present disclosure;    -   a target recipient data repository 44 including a plurality of        target recipient records 46, each target recipient record 46        corresponding to a particular target recipient, for example,        data related to target recipient name 48, account information        50, financial records 52, and other target recipient data 54;    -   other data repositories, databases or data structures 56,        including records 58 which may be resident in memory 36 or        addressable by system 10 through a network connection, storage        media interface, or the like;    -   an e-mail client 60 for sending templates or token lists to a        personalization module on a remote computer (server) using a        data network and/or Internet;    -   optional message tools 62 to aid in generating templates 72 or        token lists 74;    -   an optional target recipient relationship management module 70;        and    -   templates 72 and token lists 74 to be sent to server 202 for        message personalization.

As illustrated in FIG. 3, computer 10 comprises software program modulesand data structures. The data structures stored in computer 10 include,for example, target recipient data repository 44 and one or more otherdatabases 56 (e.g., an enterprise resource planning database, a humanresource database, a supply chain database, etc.). In some embodiments,target recipient data repository 44 is replaced and/or supplemented withother forms of customization data such a site-specific maps, weather,specific forms on news, market data, conference room availability, etc.In some embodiments, such customization data is in addition to targetrecipient data repository 44. Each of these data structures can compriseany form of data storage including, but not limited to, a flat ASCII orbinary file, an Excel spreadsheet, a relational database (SQL), or anon-line analytical processing (OLAP) database (MDX and/or variantsthereof). In some embodiments, target recipient data repository 44,optional databases 56, and target recipient relationship managementmodule 70 are not housed on client 10, but rather are housed on aseparate server and/or are located on computers that are in electroniccommunication with such a server.

In some embodiments, each of the aforementioned data structures that arestored on or are accessible to system 10 is a single data structure. Inother embodiments, such data structures, in fact, comprise a pluralityof data structures (e.g., databases, files, archives) that may or maynot all be hosted by computer 10. For example, in some embodiments,repository 44 comprises a plurality of structured and/or unstructureddata records that are stored either on computer 10 and/or on computersthat are addressable by computer 10 across network/Internet 34.

In some embodiments, data repository 44 and/or database 56 comprises adatabase that is either stored on computer 10 or is distributed acrossone or more computers that are addressable by computer 10 bynetwork/Internet 34. Thus, in some embodiments, one or more of such datastructures is hosted by one or more remote computers (not shown). Suchremote computers can be located in a remote location or in the same roomor the same building as computer 10. As such, any arrangement of thedata structures and software modules illustrated in FIG. 3 on one ormore computers is within the scope of the disclosure so long as thesedata structures and software modules are addressable by computer 10across network/Internet 34 or by other electronic means. Moreover, othersystems, application modules and databases not shown in FIG. 3 can bestored in system memory 36. Thus, the present disclosure fullyencompasses a broad array of computer systems.

In some embodiments, client computer 10 is used to store targetrecipient data 46, 56 or other forms of customization data, to createtemplates 72 and token lists 74 for target mailings, and to send thetemplates and the token lists to a personalization module on a remotecomputer. In some embodiments, templates 72 are skeletons for generatingpersonalized messages containing text common to all generated personalmessages per mailing and fields called tokens. Templates contain twotypes of tokens; global and local.

Global tokens are fields in the template that are non-target-specific.In other words, global tokens are fields that do not pertain to aparticular target. For example, a global token “##Holiday##” maycorrespond to the value “Happy Holidays,” which is non-target-specificbecause “Happy Holidays” can apply to multiple target recipients. Bycontrast, local tokens, also known as record level tokens, are fieldsthat are specific to a particular target of a mailing. For example, thelocal token “##name##” may correspond to the value “Jeff,” which isspecific to the particular target recipient, Jeff. Thus, global tokensin general correspond to the same values for different targetrecipients, whereas local tokens correspond to different values fordifferent target recipients.

Global tokens and their corresponding values are listed in token lists74. Local tokens and their corresponding values are stored in targetrecipient data repository 44 and/or database 56 and/or CRM 70 and/orother sources of customization data (e.g., maps, weather). In addition,in some embodiments, local tokens are not stored in data repositories ordatabases, but rather on the same token list as global tokens or on aseparate token list for local tokens. In some embodiments, a mailingcontains data for a single digital message for a single recipient. Inother embodiments, a mailing comprises data for a plurality ofpersonalized messages each intended for a different recipient. In stillother embodiments, a mailing comprises data for a plurality ofpersonalized messages each intended for the same or different recipient.Such personalized messages can be distributed by e-mail, SMS, FAX, IM,voice, or any other digital communication process. However, in preferredembodiments, the personalized messages are e-mail messages.

In some embodiments, e-mail client module 60 is used to send themailing. In some embodiments, the mailing is constructed using textediting functionality directly provided by client 60. In otherembodiments, optional message tools 62 are provided to assist in thecreation of the mailing. Such message tools can include, for example, agraphical user interface (GUI) driven XML and/or HTML editor fordesigning the appearance of customized e-mails for distribution. In suchembodiments, message tools reducing the image produced using the GUI toa set of commands for inclusion in the mailing. Although SMTP is used tointroduce and illustrate the concepts of the present disclosure, thescope of the disclosure is not limited to SMTP. For example, extendedsimple mail transfer protocol (ESMTP) has been developed to meet theincreasing demands of attaching various types of files to e-mails. ESMTPspecifies additional extensions to the original protocol for sendinge-mail that supports graphics, audio and video files, and text invarious national languages. Other examples of mail protocols that can beused to send a mailing to a server include, but are not limited to,POP3, X.400, or MHS protocols or logical variants thereof (e.g., e-mailmessages sent using programs similar to or derived from POP3, X.400, orMHS).

In some embodiments the mailing is compliant with one of theaforementioned e-mail protocols and is encoded in the XML language. XMLis described in, for example, Ray, Learning XML, second edition,O'Reilly Associates; Harold and Means, XML in a Nutshell, third edition,O'Reilly Associates; and Hunter et al., Beginning XML, third edition,Wrox, each of which is hereby incorporated herein by reference in itsentirety.

Now that an overview of a client system in accordance with oneembodiment of the present disclosure has been described, variousadvantageous methods that can be used in accordance with the presentdisclosure will now be disclosed in conjunction with FIGS. 4 and 5.

FIG. 4 shows an embodiment of a system 200 in accordance with thepresent disclosure. Referring to FIG. 4, in an embodiment in accordancewith the present disclosure, user computer 10 is used to generate amailing comprising templates and token lists. User computer 10 furthersends the mailing to message assembly server 202. In the embodimentillustrated in FIG. 4, server 202 includes conventional MTAfunctionalities in addition to the functionalities of the presentdisclosure. In other embodiments, server 202 includes functionality fordistributing other forms of digital communication such as SMS, FAX, IM,or voice mail. The server 202 illustrated in FIG. 4 comprises:

-   -   a CPU 222;    -   a main non-volatile storage unit 214 controlled by controller        212;    -   a system memory 236, preferably high speed random-access memory        (RAM), for storing system control programs such as operating        system 240 and file system 242, data and application programs        loaded from non-volatile storage unit 214; system memory 236 may        also include read-only memory (ROM);    -   an optional user interface 232, comprising one or more input        devices (e.g., keyboard 228) and a display 226 or other output        device;    -   a network interface card 220 or other communication circuitry        for connecting to any wired or wireless communication network        and/or Internet 34;    -   an internal bus 230 for interconnecting the aforementioned        elements of the system; and    -   a power source 224 to power the aforementioned elements.

In some embodiments system memory 236 further comprises:

-   -   a message personalization module 244 for processing a mailing        from a client 10 and creating personalized messages specific to        each of a plurality of target recipients;    -   a mail transfer agent module 246 for sending personalized        messages to target recipients;    -   a global cache 248 that stores global tokens 250 and        corresponding global token values 252, and    -   a local cache 254 that stores local tokens 256 and corresponding        local token values 258.

In some embodiments, information stored in both global cache 248 andlocal cache 252 is in efficient structured form. In some embodiments,objects in cache contain memory references to tokens pending forcomplete personalization. In some embodiments, objects in cache knowwhere values of tokens need to be replaced.

Mailings of the present disclosure can be sent, for example, by e-mailfrom client 10 to message assembly server 202 when a user desires tohave server 202 generate and send one or more personalized messages,such as personalized e-mails, to one or more intended target recipients206, e.g., clients, customers, potential customers, and/or any otherdesired target recipients for whom the user has access to personalizeddata in a data repository 204.

In some embodiments, message personalization module 244 processes themailing from client 10 and creates personalized messages specific toeach target recipient 206. Mail transfer agent module 246 then sends thepersonalized messages to target recipients 206.

In some embodiments in accordance with the present disclosure, server202 is external with respect to client 10 (e.g., FIG. 4). In someembodiments in accordance with the present disclosure, the personalizedmessages are sent from server 202. Alternatively, in other embodimentsin accordance with the present disclosure, server 202 is an integralpart of recipient 206. In still other embodiments in accordance with thepresent disclosure, client 10 is an integral part of server 202.

FIG. 5 provides a general overview of a method 500 for sendingpersonalized messages to intended recipients in accordance with anembodiment of the present disclosure. In step 502, a user creates amailing at client 10. This mailing comprises one or more templates 72and one or more token lists 74. In some embodiments, a template 72 is askeleton message including general text to be included in allpersonalized messages and fields called tokens. The tokens and theirvalues are listed in the token lists 74. Both templates 72 and tokenlists 74 can include text, markup language (e.g., HTML, WML, BHTML,RDF/XML, RSS, MathML, XHTML, SVG, cXML or XML), or other scripts orobjects. In some embodiments, the mailing is created directly usinge-mail client 60 module (FIG. 3). In some embodiments, the mailing iscreated using optional message tools 62 (FIG. 3). From here, the presentdisclosure provides different possibilities (use cases).

In the first use case, the user sends the mailing directly to messageassembly server 202 as noted in step 504 of FIG. 5 using E-mail clientmodule 60 (FIG. 3). The mailings can be specified using standard emailprotocols, UI Wizard, and Web Service APIs. The mailings can also besent using standard content upload mechanisms, such as FTP and HTTP fileupload. To illustrate this use case, consider a situation in whichmarketing manager John creates a single mailing in the form of an e-mailusing computer 10 of FIG. 3 that contains a template using tokens and alist of tokens and their values. John sends the mailing using standardOUTLOOK/Exchange (an example of client module 60) to exml@XYZ.com, theelectronic address of message personalization module 244. The messagepersonalization module 244 interprets the mailing and data in themailing and creates fully personalized messages, in the form of e-mail,to all the final recipients.

In the second use case, the user sends a mailing to target relationshipmanagement module (TRRM) 70 before the mailing is sent to messageassembly server 202 in accordance with step 504 of FIG. 5. To illustratethis use case, consider the situation in which marketing manager Debbiedecides to make use of TRRM system 70 of FIG. 3. The TRRM system alreadydoes some limited personalization. Debbie creates a new mailing templatethat contains more extensive personalization than the first use case(e.g., by using XML/XSLT). The mailing that Debbie wishes to make can becreated in at least two different ways. In one approach, the mailing iscreated by message tools 62 (e.g., Outlook/Exchange) and sent to TRRM 70where static TRRM tokens in the mailing are populated. Then, the mailingis sent from TRRM 70 of computer 10 to message personalization module244 of computer 202. In another approach, the mailing is createddirectly in TRRM module 70. Regardless of how the mailing is originated,rather than sending the messages encoded by Debbie's mailing directlyfrom TRRM 70 to one or more recipients, the personalized message is sentto a specific address, e.g., exml@XYZ.com, in this example, messagepersonalization module 244.

In the third use case, the user sends the mailing directly to messageassembly server 202 as noted in step 504 of FIG. 5 using e-mail clientmodule 60 (FIG. 1). The mailing contains multiple levels of informationfrom multiple templates 72 and multiple token lists 74. To illustratethis use case, consider a situation in which sales manager Mark createsmultiple EXML templates 72 using computer 10 of FIG. 3 and multipletoken lists 74. Mark then sends the mailing using standardOutlook/Exchange (an example of E-mail client 60) to exml@XYZ.com, theaddress of message personalization module 244. For each targetrecipient, a personalized message is created using some or all of thetemplates and token lists. Message personalization module 244pre-processes the templates 72, substitutes the tokens with tokenvalues, and sends fully personalized messages (e.g. personalizede-mails) to one or more final recipients.

Referring to step 506, regardless of which use case is employed inpreceding steps, message personalization module 244 on server 202pre-processes the templates 72 sent by client 10 in order to createpersonalized messages. In one embodiment, message personalization module244 creates a new message and copies text over from the templates 72. Inanother embodiment, message personalization module 244 simply merges andmodifies the original templates 72.

Referring to step 508, message personalization module 244 identifies andstores global tokens 250 and corresponding global token values 252 inglobal cache 248. Global tokens 250 are tokens which can be resolvedusing the token lists 74. In this case, resolving a token meansdetermining the value of the token and replacing the token with thedetermined token value. If the token is in token list 74, the value ofthe token is also in token list 74 and thus is known. For example, atoken “##MailingID##” in a template 72 can be resolved by looking up“##MailingID##” in a token list 72-1. If “##MailingID##” can be found intoken list 72-1, then the value of token “##MailingID##,” can also befound in token list 72-1 and is thus known. Since the value of“##MailingID##” is known from token list 72-1, “##MailingID##” is aglobal token. Once identified, global tokens and their values are storedin global cache 248. In some embodiments, global cache 248 is a part ofmemory 236. In other embodiments, global cache 248 is separate frommemory 236. Storing global tokens and their corresponding values inglobal cache 248 allows for quick access to the token values whenpersonalizing the messages.

Referring to step 510, message personalization module 244 on server 202also identifies and stores local tokens 256 and their correspondingvalues in local cache 254. Local tokens 256 are tokens that can beresolved only by retrieving record level information from targetrecipient data repository 44 or other databases 56. Record levelinformation is any information pertaining to target recipients. Forexample, if token “##name##” can only be resolved by retrieving targetrecipient record 46-1 in target recipient data repository 44, then“##name##” is a local token and it and its corresponding value arestored in local cache 254. Like global cache 248, local cache 254 can bepart of memory 236 or completely separate.

Referring to step 512, new personalized messages are created bysubstituting tokens in the template with token values found in eitherglobal 248 or local cache 254. In some embodiments steps 508 and 510 areprocessed concurrently or nearly concurrently and step 512 is processedsubsequently. In other embodiments, all three steps occur concurrentlyor nearly concurrently. In still other embodiments, the steps can occurin succession with any order, as long as step 512 does not occur beforesteps 508 or 510 have been initiated.

After a new personalized message has been created, server 202 forwardsthe personalized message to the intended target recipient for which therecord level data was retrieved from target recipient data repository44. Server 202 can send the message through either messagepersonalization module 244 or mail transfer agent 246. The delineationof a separate message personalization module 244 and mail transfer agent246 as two separate modules is for illustrative purposes only. In someembodiments, message personalization module 244 and mail transfer agentmodule 246 are contained in the same software program. As such, thedescription of message personalization module 244 and mail transferagent module as separate modules is merely provided herein to bestillustrate the functionality of the MTAs of some embodiments of thepresent disclosure.

After sending the personalized message to the target recipient, server202 repeats the process for a different target recipient until no moretarget recipients remain. In some embodiments, server 202 repeats theprocess after sending the personalized message in step 516. In otherembodiments, server 202 repeats the process after creating the newpersonalized message in step 512 and then sends all the personalizedmessages to their respective target recipients at once. Still in otherembodiments, server 202 sends the personalized messages when the processhas repeated for a predefined number of cycles.

Referring to step 514, after a particular personalized message has beencreated, the local cache 254 is flushed. Flushing the local cache 254frees up memory space to store local tokens and corresponding values forthe personalized message that is to be sent to a different targetrecipient. In some embodiments, step 514 is optional. In otherembodiments of the present disclosure, local cache 254 is not flushed,but rather new local token values 258 that are retrieved with respect toa different target recipient simply replace the old token values 258 forcorresponding local tokens 256 that are already stored in local cache254 from the previous cycle.

One advantage of the message personalization methods of the presentdisclosure is that there is no absolute requirement for a specializeduser interface in order to create a mailing. For example, one can simplyuse an application such as Microsoft Outlook, and add lists from aspreadsheet, if desired. In fact, the mailing can be constructed in asimple ASCII editor. In some embodiments, if a user has data in acustomer relationship management database (e.g., Siebel or Oracle),enhanced functionality such as tracking, dynamic content, and the likecan be utilized and/or incorporated to generate and send personalizedmessages such as personalized e-mail messages.

In some embodiments, the systems and methods of the present disclosureprovide a user with the ability to encode instructions in the mailingthat instruct message personalization module 244 to access data from, orprovide data to, data repositories stored in external systems (e.g.,customer data repository 44 and/or other database 56 or flat file storedby or addressable by computer 202). In other embodiments, server 202itself contains instructions for retrieval from such data repositories.Such data repositories can include, for example, one or morehierarchical databases, and/or one or more relational databases, and/orone or more other data structures or flat files. As illustrated in FIG.4, data can be retrieved or submitted, for example, over networkconnection 34 or from storage media provided to the messagepersonalization module 244. In FIG. 4, message personalization module244 can communicate with one or more external databases 402, HTTP webservices 404, or TCP/IP web services 406 using network connection 34.Using the systems and methods of the present disclosure, such resourcescan be accessed in order to provide secure custom statements (e.g.,banking statements), person-to-person customized e-mail, traceablee-mails, e-mails from customer service to existing customers, e-mailsfrom an employer to an employee and the like. Network connection 34 maybe wired or wireless and client 10 is, in some embodiments a portablecomputer or a tablet computer.

In some embodiments, for data security reasons, access to an entirecustomer database may be denied. In such embodiments, one or more filescontaining only the data required to generate the desired messages ismade available to message personalization module 244 and/or mailtransfer agent module 246.

In some embodiments, the mailing includes limited or full access rightsto a users' data repository. For example, a mailing can include acommand that defines limited or full login rights, limited or full queryrights, access to only certain records, fields or files or certainportions of a database or data repository, access for a limited periodof time, and the like.

In some embodiments, certain destinations associated with messagepersonalization module 244 and/or mail transfer agent module 246 can bedesigned to be <EXML> enabled. For example, a particular mailbox calledexml@strongmailsystems.com (or exml@mtacompany.com) can be set up sothat, when a user sends a mailing to such an address, the request isparsed by message personalization module 244 and personalized messagesare distributed by mail transfer agent module 246 based on the productof message personalization module 244 after parsing the EXML message.

In some embodiments, a target recipient relationship management module70 of user computer 10 has the ability to personalize messages (e.g.personalized e-mails) based on database tokens. In such embodiments,user computer 10 can originate a template 72 that contains EXMLformatting and data pointer information. In one example, for eachdigital message (e.g., e-mail) specified by template 72, the First_Nameand Account_ID of each customer in a customer list can be represented,for example, as EXML tokens in the body of template 72. Template 72containing these tokens is then sent to server 202, which then usesadvanced parsing techniques to personalize the message (e.g., process as“Dear ##First_Name##, . . . ”) for each target recipient 206. Thepersonalized messages are then sent to each recipient 206 specified bythe original mailing.

In another embodiment, client 10 creates a mailing consisting of asingle message (e.g., e-mail). The message contains a template 72, thefull list of recipients 206, and a token list 74 for formatting withinthe message itself. The receiving system 202 receives this singlemessage mailing, then generates one or more outgoing personalizedmessages (e.g., e-mail, FAXes, IM, voice, etc.) based upon the datacontained within the single message mailing itself.

A more detailed example of a template 72 used in a mailing in accordancewith an embodiment of the present disclosure is reproduced below.

Sample message template 72:

-   -   1 X-MailingID: ##MailingID##    -   2 Subject: Hi ##email##    -   3 Content-type: text/html    -   4    -   5 Dear ##name##:    -   6    -   7 This is a sample message. Your offer is:    -   8 ##\id.Offer##    -   9    -   10 Thank You

The exemplary template 72 above contains both general text that willremain unaltered during the personalization process and tokens, denotedby ##[token]##. For example, line 5 consists of general text “Dear” and“:” and token “##name##”. As will be discussed later in the presentdisclosure, during the personalization process, tokens such as ##name##are replaced by the corresponding value contained in a token list 74.Thus, a finished personalized message would essentially resemble thesample template above, except all tokens are replaced with respectivetoken values. As discussed above, tokens can be either global or local.In the instant example, global tokens are not represented differentlyfrom local tokens 256. Thus, the status of a token in the instantexample cannot be ascertained simply by reading the template. Rather,the status of a token is ascertained by resolving the token. Forexample, without a global or local token designation, the token“##name##” can be either global or local. In some embodiments, as in theinstant example, global tokens 250 and local tokens 256 cannot bedifferentiated without resolving token values. In other embodiments,global tokens 250 and local tokens 256 are labeled differently in thetemplate 72 itself. In still other embodiments, global tokens 250 andlocal tokens 256 are represented in the same format, as in the aboveexample, but marked by some signal indicating whether the token isglobal or local.

In some embodiments, a template 72 can also contain recursive tokens. Anexample of a recursive token is a token that references a subtoken, e.g.a token referenced by another token. The subtoken itself can be anotherrecursive token that references yet another subtoken. For instance thetoken “##\id.Offer##” on line 8 of the instant example represents arecursive token that implies the value of the subtoken “Offer” withinthe value of the “id” token. For example, if token “Offer” representsvalue “This is an offer for ##Name##,” and token “id” represents value“John,” then the recursive token “\id.Offer” represents the value “Thisis an offer for John.” In some embodiments, recursive global tokens canonly reference other global tokens and recursive local tokens can onlyreference other local tokens. In other embodiments, recursive globaltokens can reference local tokens and recursive local tokens canreference global tokens.

In some embodiments, the header of a template 72 is specified in thebeginning of the message. The header information can go into the headeror text of the personalized messages or can be left out of thepersonalized messages completely (e.g. used only for processingpurposes). In the instant example, the message header starts at line 1of the template message and ends with blank line 4 following the phrase“Content-type: text/html” on line 3. It is important to note that theend of the message headers can be denoted in a variety of ways, such asa specific ASCII character or sequence of characters, or at a fixednumber of bits or bytes from the beginning of the file storing themessage.

The template 72 represented above represents only one example of atemplate in accordance with an embodiment of the present disclosure.Content, organization, and format of the template can vary and still bewithin the scope of the present disclosure.

A more detailed example of a token list 74 used in a mailing inaccordance with an embodiment of the present disclosure is reproducedbelow.

Sample Token List 74:

MailingID=1235 1 {  Offer {   This is a car offer for ##Name## based onid: ##id##.  } } 2 {  Offer {   This is a motorbike offer for ##Name##based on id: ##id##.  } } 3 {  Offer {   This is a Toy offer for##Name## based on id: ##id##.  } }

The exemplary token list 74 above contains tokens and correspondingtoken values. The token values can be numbers, text, or tokensthemselves. For example, tokens—“MailingID,” “1 Offer,” “2 Offer,” and“3 Offer”—correspond to token values—“1235,” “This is a car offer for##Name## based on id: ##id##.,” “This is a motorbike offer for ##Name##based on id: ##id##.,” and “This is a Toy offer for ##Name## based onid: ##id##.”—respectively.

A more detailed example of a database 56 that can be utilized by amessage personalization system in accordance with an embodiment of thepresent disclosure is reproduced below.

Sample Database 44:

a@a.com::2::A

t@t.com::1::T

As discussed above, a database or data repository 44 contains targetrecipient information in, for example, record-level form. In otherwords, each record in database 44 contains information about a targetrecipient. Each record contains values for local tokens in a pre-definedformat. In the above example, each record 46 uses the format“email::id::Name,” with “::” as delimiters, to represent values for thetokens “email,” “id,” and “Name.” For example, the first record in theabove sample database contains the value “a@a.com” for the token“email.” Database or data repository records 46 can take any number offorms using a variety of formats in accordance with embodiments of thepresent disclosure.

Using the sample template 72, sample token list 74, and sample database44 above, a more detailed example of an algorithm for messagepersonalization that can be utilized by a message personalization systemin accordance with an embodiment of the present disclosure is reproducedbelow.

Sample Algorithm:

step 1. Initial state:

-   -   Global Cache: <empty>    -   Local Cache: <empty>

step 2. Pre-process message template at the global level:

-   -   Global Cache: [MailingID]:[1235]    -   Local Cache: <empty>    -   Template takes following shape

step 3. Pick first record a@a.com::2::A and start personalization.

-   -   Global Cache: [MailingID]:[1235], [2Offer]:[This is a motorbike        offer for ##Name## based on id: ##id##.],    -   Local Cache: [email]:[a@a.com], [Name]:[A], [id]:[2],        [2Offer]:[This is a motorbike offer for A based on id: 2.],        [\id.Offer]:[This is a motorbike offer for A based on id: 2.]

(Message is fully personalized using local cache for repeated tokens inthe message.)

step 4. Flush the Local cache.

-   -   Global Cache: [MailingID]:[1235], [2Offer]:[This is a motorbike        offer for ##Name## based on id: ##id##.]    -   Local Cache: <empty>

step 5. Pick the second record t@t.com::1::T and start personalization.

-   -   Global Cache: [MailingID]:[1235], [2Offer]:[This is a motorbike        offer for ##Name## based on id: ##id##.], [1Offer]:[This is a        car offer for ##Name## based on id: ##id##.]    -   Local Cache: [email]:[t@t.com], [Name]:[T], [id]:[1],        [1Offer]:[This is a car offer for T based on id: 1.],        [\id.Offer]:[This is a car offer for T based on id: 1.]

(Message is fully personalized using local cache for repeated tokens inthe message.)

step 6. Flush the Local cache.

-   -   Global Cache: [MailingID]:[1235], [2Offer]:[This is a motorbike        offer for ##Name## based on id: ##id##.], [1Offer]:[This is a        car offer for ##Name## based on id: ##id##.]    -   Local Cache: <empty>

The exemplary algorithm above utilizes two levels of cache, a globalcache 248 and a local cache 254, in accordance with an embodiment of thepresent disclosure. The global cache stores tokens that can be resolvedin the deepest form using the token list 74. The local cache storestokens that can only be fully resolved using record level informationfrom the database 44.

In step one of the exemplary algorithm, the initial state, both globaland local caches are empty.

In step two of the exemplary algorithm, the template 72 is tokenized atthe global level. This means that any global tokens identified in thetemplate are stored in the global cache 248 along with the correspondingvalues listed in the token list. In the example above, the token“##MailingID##” is a global token. From the sample token list,“##MailingID##” has a token value of “1235.” Thus, the global token“##MailingID##” and its corresponding value “1235” is stored in globalcache 248 as “[MailingID]:[1235].” Token/value pairs can be stored in avariety of formats. The format shown above in step two of the samplealgorithm represents just one example of a stored entry in global cache248. After step two of the sample algorithm, the tokenized template 72looks like the following:

-   -   X-MailingID: 1235    -   Subject: Hi ##email##    -   Content-type: text/html    -   Dear ##name##:    -   This is a sample message. Your offer is:    -   ##\id.Offer##    -   Thank You

In step 3 of the algorithm, a record a@a.com::2::A is chosen forpersonalization. Local tokens “email,” “Name,” “id,” “2Offer,” and“\id.Offer” and corresponding values are added to local cache 254. Inthe above example, the tokens “2Offer” and “\id.Offer” have the samecorresponding value. In some embodiments, two tokens can have the samevalue. It is important to note that the token “2Offer” is also added toglobal cache 248. Although “2Offer” is a global token (the value wasresolved using the token list and is not necessarily specific to aparticular record), it is also a local token because it could not havebeen resolved without reference to a record. “2Offer” could not havebeen resolved in step 2 because “2Offer” is a global subtoken ofrecursive token “\id.Offer,” which is dependent upon local token “id.”It is worth noting that “2Offer” has a corresponding value that isnon-target specific in global cache 248 and a corresponding value thatis target specific in local cache 254.

In the present example, global cache entries can be added in step 2 andin step 3. In alternative embodiments, global cache entries can be addedany in any step or can be limited to be added only in certain steps. Itis worth noting that the order or time of entry is not important.

After step three, the message is fully personalized with respect torecord a@a.com::2::A. The personalized message is then sent to a@a.comor saved into memory for sending later. The fully personalized messageafter step 3 is presented below.

X-MailingID: 1235

Subject: Hi a@a.com

Content-type: text/html

Dear A:

This is a sample message. Your offer is:

-   -   This is a motorbike offer for A based on id: 2.

Thank You

In step four, the local cache 254 is flushed.

In step five, a second record t@t.com::1::T is chosen and thepersonalization process is repeated with respect to the second record.Note that the global cache 248 is not flushed and additional globaltokens, e.g. “1Offer,” are added in addition to tokens added fromprevious steps.

In step six, the local cache 254 is once again flushed. Since the sampledatabase 44 only contains two records, the process ends after step 6.Otherwise, another record is chosen and the personalization process isrepeated for any additional record remaining. As a secondary example,the personalized message for record t@t.com::1::T is reproduced below.

X-MailingID: 1235

Subject: Hi t@t.com

Content-type: text/html

Dear T:

This is a sample message. Your offer is:

-   -   This is a car offer for T based on id: 1.

Thank You

The example above represents an example of a finished personalizedmessage product in accordance with embodiments of the presentdisclosure. The exemplary personalized message no longer contains anytokens. All global and local tokens have been replaced with token valuesand hence the message is personalized and complete.

As mentioned above, the message personalization process can be optimizedusing two levels of cache, e.g. a global cache 248 and a local cache254. One advantage of having two levels of cache is more efficient useof smaller cache sizes. Because each target recipient haspersonalization information that only pertains to that particularrecipient, e.g. a name or email address, the personalization informationis no longer useful once a message has been personalized for that targetrecipient. Therefore, an exemplary local cache 254 stores thepersonalization information for a particular target recipient until themessage personalization process is completed and then flushes itscontents to free up memory space for personalization information of thenext target recipient. Without a second, e.g. local, level of cache,either much more memory space would be needed to continually store addedpersonalization information or no cache is used, in which case theprocessing would be much slower as discussed further below. Anotheradvantage of using two levels of cache is faster processing speed.Without two levels of cache the personalization process would have to becompleted with only one cache or no cache at all. With no cache, eachtoken encountered triggers a new look-up of the token value, even if thesame token as already been encountered. This leads to repetitive,wasteful, and inefficient processing. With only one cache, as discussedabove, the memory space needed would need to be much larger. This wouldlead to slower reads and writes to the cache and would ultimately reduceprocessing speed significantly.

The present disclosure places no restrictions on the order that each ofthe aforementioned steps appear within the algorithm. However, generallyspeaking, the steps of the algorithm occur in sequence from steps onethrough six. In other embodiments, other intermediary steps occur at thebeginning, middle, or end of the algorithm. There is no requirement thatany of the tokens appear in a token list. For example, in someembodiments, the token list can be a null set. There is no requirementfor the location of target recipient data repository. For example, insome embodiments, target recipient data repository 44 consists ofexternal files and databases. Such external files or databases can, forexample, be at one or more locations that are addressable by messagepersonalization module 244 via network/Internet 34. For instance, insome embodiments, a mailing can refer message personalization module 244to a specific URL address in order to obtain all or a portion of thedata belonging to any of the aforementioned information elements.

There is no requirement that the mailing have more than one finalrecipient. In fact, in some instances there is only one final recipient.For example, in the exemplary mailing above, rather than having stepsfour through six, the algorithm stops after step three. In some otherembodiments, the mailing necessitates more than one final recipient. Inthose cases, the algorithm would proceed as disclosed in the exampleabove.

In some embodiments in accordance with the present disclosure, a usermay utilize embedded tokens in a template 72 to obtain customized datafrom different resources. In some embodiments, a menu choice, such asthose observed for a typical My Yahoo interface, is provided so that theuser may choose to include relevant information by selecting to turn onone or more of the token features, which are then incorporated into thetemplate. In other words, in some embodiments of the present disclosure,a graphical user interface that includes menu choices may be employed bya user in order to construct a mailing.

In some embodiments in accordance with the present disclosure, themailing may be sent from one computer to one or more other computers.For example, client 10 may be a part of the built-in computer systemassociated with a refrigeration unit that sends out mailings in responseto certain events, e.g., the quantity of milk supply in therefrigerator. When the milk supply drops below a predetermined level,client 10 originates and sends out a mailing. The mailing is sent to,for example, exml@xyz.com, the address of module 244. Module 244processes the mailing and sends personalized messages to the targetrecipients 206. Module 244 is hosted by server 202. In some embodiments,server 202 hosts a website of a grocery store and has access to one ormore grocery databases. Module 244 processes the mailing and extractsrelevant information out of the grocery databases to generate apersonalized message to be posted on the web site or a separate grocerystore database (e.g., recipient 206). Product delivery may be arrangedaccordingly. Alternatively, module 244 processes the mailing andextracts the relevant information out of the grocery database togenerate a personalized message that gets sent back to client 10 tocompile a grocery list. The personalized message contains, for example,price and product information for milk products that are available atthe grocery store. In some embodiments, the personalized message alsocontains additional produce or food or non-food product information thatis relevant to the product inquiry (e.g., information on cheese oryogurt products may accompany a milk shortage warning message).

In some embodiments in accordance with the present disclosure, mailingsmay be sent from a person for use by a recipient that is a computeritself, as opposed to a person that has access to the computer.Correspondingly, in some embodiments, the originator of a mailing insome embodiments of the present disclosure is a computer, as in therefrigerator example above, not a person, and, in such embodiments, theintended recipient is one or people or one or more computers. Toillustrate one such embodiment, a blog owner may program a client 10 sothat it automatically sends out mailings of the present disclosure tothe computer system that hosts the blog (e.g., recipient 206). Themailing may contain tokens that correspond to, for example, the accountID of the blog owner and topic and general interest information of theblog. In some embodiments, the mailing is processed by module 244 ofrecipient system 206 to generate personalized messages that will beposted accordingly on the blog site. Alternatively, mailings may be sentfrom the computer system that maintains the blog site to one or moreblog owners. Such mailings contain tokens that correspond to, forexample, the account ID of the blog owner and topic and general interestinformation of the blog. Appropriate information may be retrieved fromthe Internet and composed into personalized messages to each blog user.

In some embodiments in accordance with the present disclosure,additional modules may be added to the message personalization module(e.g., component 244) such that the personalized messages may beconverted to voice mails. Exemplary text-voice conversion tools includethe voice extensible markup language (VoiceXML). VoiceXML is designedfor creating audio dialogs that feature synthesized speech, digitizedaudio, recognition of spoken and dual-tone-multi-frequency (DTMF) keyinput, recording of spoken input, telephony, and mixed initiativeconversations. A goal of VoiceXML is to bring the advantages ofweb-based development and content delivery to interactive voice responseapplications.

The exemplary mailing provided above illustrates the advantages of thepresent disclosure. The language used in the exemplary mailing is usedto define a data structure that is delivered to batch e-mailpersonalization server 202. The mailings contain all the data necessaryto obtain personalized messages including both the templates and thetoken lists. Once constructed, the need to have an IT specialistinvolved in future communication is obviated. A business developmentprofessional simply alters the templates or token lists for newmailings.

The present invention can be implemented as a computer program productthat comprises a computer program mechanism embedded in a computerreadable storage medium. For instance, the computer program productcould contain the program modules shown in FIG. 3 and/or FIG. 4. Theseprogram modules can be stored on a CD-ROM, DVD, magnetic disk storageproduct, or any other computer readable data or program storage product.The program modules can also be embedded in permanent storage, such asROM, one or more programmable chip, or one or more application specificintegrated circuits (ASICs). Such permanent storage can be localized ina server, 802.11 access point, 802.11 wireless bridge/station, repeater,router, mobile phone, or other electronic devices. The software modulesin the computer program product can also be distributed electronically,via the Internet or otherwise, by transmission of a computer data signal(in which the software modules are embedded) either digitally or on acarrier wave.

Many modifications and variations of this invention can be made withoutdeparting from its spirit and scope, as will be apparent to thoseskilled in the art. The specific embodiments described herein areoffered by way of example only, and the invention is to be limited onlyby the terms of the appended claims, along with the full scope ofequivalents to which such claims are entitled.

1. A computer-implemented method for building a personalized message fora recipient using one or more templates and one or more token lists,wherein each template in the one or more templates comprises a subset ofglobal tokens in a plurality of global tokens, and each template in theone or more template comprises a subset of local tokens in a pluralityof local tokens, the method being performed by one more processors andmemory, the memory storing a global cache and a local cache wherein, themethod comprising: (a) identifying, in a template designated for therecipient in the one or more templates, one or more global tokens notfound in the global cache; (b) obtaining, for each global token in theone or more global tokens identified in (a), a corresponding globaltoken value from the one or more token lists, each token list in the oneor more token lists including one or more global tokens in the pluralityof global tokens and corresponding global token values; (c) storing inthe global cache, the one or more global tokens identified in (a) andtheir corresponding global token values obtained in (b); (d) storing inthe local cache one or more local tokens in the template designated forthe recipient and corresponding local token values when the one or morelocal tokens are not present in the local cache; and (e) building apersonalized message from the template designated for the recipient bysubstituting global tokens in the template designated for the recipientwith global token values stored in the global cache and substitutinglocal tokens in the template designated for the recipient with localtoken values associated with the recipient that are stored in the localcache, thereby building the personalized message.
 2. Thecomputer-implemented method of claim 1, further comprising flushing thelocal cache after building the personalized message.
 3. (canceled) 4.The computer-implemented method of claim 1, further comprising sendingthe personalized message to the recipient.
 5. The computer-implementedmethod of claim 1, wherein the steps of the method are performed on aserver.
 6. The computer-implemented method of claim 1, wherein the localtoken values stored in (d) are retrieved from a data repository oftarget recipient records and information.
 7. The computer-implementedmethod of claim 1, wherein the local token values stored in (d) areretrieved from a local token list received from a client computer. 8.The computer-implemented method of claim 1, wherein the one or moretemplates are received from a client computer.
 9. (canceled)
 10. Thecomputer-implemented method of claim 1, wherein global token values orlocal token values are themselves tokens or subtokens.
 11. Thecomputer-implemented method of claim 1, wherein the personalized messageis an e-mail, a SMS message, a FAX message, an instant message, or avoice message.
 12. A computing device for building a personalizedmessage for a recipient using one or more templates and one or moretoken lists, wherein each template in the one or more templatescomprises a subset of global tokens in a plurality of global tokens, andeach template in the one or more templates comprises a subset of localtokens in a plurality of local tokens, the computing device comprising aprocessor and a memory, the memory storing a global cache and a localcache, wherein the memory comprises instructions, executable by theprocessor, for: (a) identifying, in a template designated for therecipient in the one or more templates, one or more global tokens notfound in the global cache; (b) obtaining, for each global token in theone or more global tokens identified in (a), a corresponding globaltoken value from the one or more token lists, each token list in the oneor more token lists including one or more global tokens in the pluralityof global tokens and corresponding global token values; (c) storing inthe global cache, the one or more global tokens identified in (a) andtheir corresponding global token values obtained in (b); (d) storing inthe local cache one or more local tokens in the template designated forthe recipient and corresponding local token values when the one or morelocal tokens are not present in the local cache; and (e) building apersonalized message from the template designated for the recipient bysubstituting global tokens in the template designated for the recipientwith global token values stored in the global cache and substitutinglocal tokens in the template designated for the recipient with localtoken values associated with the recipient that are stored in the localcache, thereby building the personalized message.
 13. The computingdevice of claim 12, wherein the memory further comprises instructionsfor flushing the local cache after building the personalized message.14. The computing device of claim 12, wherein the instructions areexecuted during load time.
 15. The computing device of claim 12, whereinthe memory further comprises instructions for sending the personalizedmessage to the recipient.
 16. The computing device of claim 12, whereinthe local token values stored in the local cache by the storing (d) areretrieved from a data repository of target recipient records andinformation.
 17. The computing device of claim 12, wherein the localtoken values stored in the local cache by the storing (d) are retrievedfrom a local token list received from a client computer.
 18. Thecomputing device of claim 12, wherein the one or more templates arereceived from a client computer.
 19. The computing device of claim 12,wherein the one or more token lists in (b) are received from a clientcomputer.
 20. A computer system for building a personalized message fora recipient using one or more templates and one or more token lists,wherein each template in the one or more templates comprises a subset ofglobal tokens in a plurality of global tokens, and each template in theone or more templates comprises a subset of local tokens in a pluralityof local tokens, the computer system comprising one or more processorsand memory, wherein the memory stores a global cache and a local cacheand instructions, executable by the one or more processors, for: (a)identifying, in a template designated for the recipient, one or moreglobal tokens not found in the global cache; (b) obtaining, for eachglobal token in the one or more global tokens identified in (a), acorresponding global token value from the one or more token lists, eachtoken list in the one or more token lists including one or more globaltokens in the plurality of global tokens and corresponding global tokenvalues; (c) storing in the global cache, the one or more global tokensidentified in (a) and their corresponding global token values obtainedin (b); (d) storing in the local cache one or more local tokens in theone or more templates and corresponding local token values when the oneor more local tokens are not present in the local cache; and (e)building a personalized message from the template designated for therecipient by substituting global tokens in the template designated forthe recipient with global token values stored in the global cache andsubstituting local tokens in the template designated for the recipientwith local token values associated with the recipient that are stored inthe local cache, thereby building the personalized personalized message.21. A non-transitory computer readable medium comprising instructions toperform a method for building a personalized message for a recipientusing one or more templates and one or more token lists, wherein eachtemplate in the one or more templates comprises a subset of globaltokens in a plurality of global tokens, and each template in the one ormore templates comprises a subset of local tokens in a plurality oflocal tokens, the method being performed by one more processors andmemory, the memory storing a global cache and a local cache wherein, fora target recipient, the method comprises: (a) identifying, in a templatedesignated for the recipient in the one or more templates, one or moreglobal tokens not found in a global cache; (b) obtaining, for eachglobal token in the one or more global tokens identified in (a), acorresponding global token value from the one or more token lists, eachtoken list in the one or more token lists including one or more globaltokens in the plurality of global tokens and corresponding global tokenvalues; (c) storing in the global cache, the one or more global tokensidentified in (a) and their corresponding global token values obtainedin (b); (d) storing in the local cache one or more local tokens in thetemplate designated for the recipient and corresponding local tokenvalues when the one or more local tokens are not present in the localcache; and (e) building a personalized message from the one or moretemplates for the recipient by substituting global tokens in thetemplate designated for the recipient with global token values stored inthe global cache and substituting local tokens in the templatedesignated for the recipient with local token values associated with therecipient that are stored in the local cache, thereby building thepersonalized message.
 22. The computer-implemented method of claim 1,wherein the personalized message is a social network post.